package com.itheima.service.mongo.impl;


import com.itheima.domain.mongo.Questionnaire;
import com.itheima.service.mongo.QuestionnaireService;
import com.itheima.vo.PageBeanVo;
import org.apache.dubbo.config.annotation.DubboService;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.ArrayList;
import java.util.List;
@DubboService
public class QuestionnaireServiceImpl implements QuestionnaireService {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public List<Questionnaire> findAll() {
      return mongoTemplate.find(new Query().with(Sort.by(Sort.Order.asc("star"))),Questionnaire.class);
    }

    @Override
    public void save(Questionnaire questionnaire) {
       mongoTemplate.save(questionnaire);
    }

    @Override
    public Questionnaire findById(ObjectId questionnaireId) {
       return mongoTemplate.findById(questionnaireId,Questionnaire.class);
    }

    @Override
    public PageBeanVo findPage(Integer pageNum, Integer pageSize) {
        Query query = new Query().with(Sort.by(Sort.Order.asc("star")));
        long count = mongoTemplate.count(new Query(), Questionnaire.class);
        List<Questionnaire> questionnaires = mongoTemplate.find(query, Questionnaire.class);
        return new PageBeanVo(pageNum,pageSize,count,questionnaires);
    }

    @Override
    public void deleteByIds(List<ObjectId> ids) {

            mongoTemplate.remove((new Query(Criteria.where("_id").in(ids))),Questionnaire.class);

    }
}
